package com.axin.blog.api.domain;

import com.axin.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 客户端用户
 *
 * @Author axin
 * @Date 2021/11/6 15:15
 **/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("t_web_user")
public class WebUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 客户端用户ID
     */
    @TableId(value = "user_id", type = IdType.AUTO)
    private Long userId;

    /**
     * 用户名
     */
    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
    private String userName;

    /**
     * 用户昵称
     */
    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
    private String nickName;

    /**
     * 登录密码
     */
    @TableField(
            insertStrategy = FieldStrategy.NOT_EMPTY,
            updateStrategy = FieldStrategy.NOT_EMPTY,
            whereStrategy = FieldStrategy.NOT_EMPTY
    )
    private String password;

    /**
     * 登录平台(axin,qq,wechat,gitee)
     */
    private String platform;

    /**
     * 登录平台唯一id
     */
    private String platformOpenid;

    /**
     * 状态（0停用 1正常）
     */
    private Integer status;

    /**
     * 评论状态 （0:禁言,1:正常）
     */
    private Integer commentStatus;

    /**
     * 邮件通知状态(0:关闭, 1:开启)
     */
    private Integer emailNoticeStatus;

    /**
     * 头像
     */
    private String avatar;

    /**
     * QQ号
     */
    private String qqNumber;

    /**
     * 微信号
     */
    private String weChat;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 电话号码
     */
    private String phone;

    /**
     * 自我简介(最多150字)
     */
    private String summary;

    /**
     * 用户性别（0女 1男 2未知）
     */
    private String sex;

    /**
     * 出生年月日
     */
    private Date birthday;

    /**
     * 用户类型(1普通用户,2博主)
     */
    private Integer userType;

    /**
     * 登录次数
     */
    private Integer loginCount;

    /**
     * 最后登录IP
     */
    private String loginIp;

    /**
     * 最后登录时间
     */
    private Date loginDate;

    /**
     * 浏览器
     */
    private String browser;

    /**
     * 操作系统
     */
    private String os;

    /**
     * 搜索值
     */
    @ApiModelProperty(value = "搜索值")
    @TableField(exist = false)
    private String searchValue;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 请求参数
     */
    @ApiModelProperty(value = "请求参数")
    @TableField(exist = false)
    private Map<String, Object> params = new HashMap<>();

}
